/*
 * Copyright (C) 2021 The Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 */

package com.oushangfeng.pinneddemo.adapter.viewholder;

import com.oushangfeng.pinneddemo.ResourceTable;
import com.oushangfeng.pinneddemo.adapter.CommonProvider;
import com.oushangfeng.pinneddemo.adapter.ViewHolder;
import com.oushangfeng.pinneddemo.datainterface.EventTransmissionListener;
import com.oushangfeng.pinneddemo.model.WaterfallModel;
import com.oushangfeng.pinneddemo.util.ToastUtil;
import com.oushangfeng.pinnedsectionitemdecoration.callback.datainterface.Model;

import ohos.agp.components.Component;
import ohos.agp.components.ComponentContainer;
import ohos.agp.components.DirectionalLayout;
import ohos.agp.components.LayoutScatter;
import ohos.agp.components.ListContainer;
import ohos.agp.components.TableLayoutManager;

import java.util.List;

/**
 * WaterfallViewHolder
 *
 * @since 2021-03-27
 * Created by oubowu on 2021/3/27 10:29
 */
public class WaterfallViewHolder extends ViewHolder<WaterfallModel> {
    private static final int FLAG = 2131558408;
    private static final int INT_3 = 3;

    Component songItemNested;
    private ListContainer listContainer;
    private CommonProvider commonProvider;
    private DirectionalLayout directionalLayout;

    private List<Model> data;

    /**
     * WaterfallViewHolder
     *
     * @param eventTransmissionListener
     * @param component
     * @param provider
     * @param componentContainer
     */
    public WaterfallViewHolder(EventTransmissionListener eventTransmissionListener,
                               Component component, CommonProvider provider, ComponentContainer componentContainer) {
        super(eventTransmissionListener, component, provider, componentContainer);
        listContainer = (ListContainer) findComponentById(ResourceTable.Id_lc_item_waterfall);
        directionalLayout = (DirectionalLayout) findComponentById(ResourceTable.Id_dir_waterfall_item);
        commonProvider = new CommonProvider(null,getContext());
    }

    @Override
    public void onDataBound() {
        if (data == null) {
            data = getModel().getData();
        }
        commonProvider.setModels(data);

        songItemNested = LayoutScatter.getInstance(getContext()).parse(ResourceTable.Layout_song_item_nested,
                null, false);

        listContainer.setItemLongClickedListener(new ListContainer.ItemLongClickedListener() {
            @Override
            public boolean onItemLongClicked(ListContainer mlistContainer, Component component, int i, long l) {
                toastUtil.toast(getContext(),"item long click,tag:"
                        + data.get(i).getTypeName() + ",position " + data.get(i).getItemValue() + ",id " + FLAG + i);
                return false;
            }
        });

        // 设置网格方向和数
        TableLayoutManager tableLayoutManager = new TableLayoutManager();
        tableLayoutManager.setOrientation(Component.HORIZONTAL);
        tableLayoutManager.setColumnCount(INT_3);

        // 获取网格宽度
        if (tableLayoutManager != null) {
            listContainer.setLayoutManager(tableLayoutManager);
        }
        listContainer.setItemProvider(commonProvider);
    }
}
